package com.spsoft.system.model.vo;

import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 通用发票主信息
 *
 * @author : chenxudong
 * @date : 2024/4/8 18:35
 */
@Data
public class InvoiceVo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 发票主键
     */
    private Long id;

    /**
     * 发票代码
     */
    private String fpdm;

    /**
     * 发票号码
     */
    private String fphm;

    /**
     * 数据库来源：1 进项票、2 税控票、3 数电票
     */
    private String sjkly;

    /**
     * 蓝字发票标志; 0：蓝字发票 1：红字发票
     */
    private String lzfpbz;

    /**
     * 发票票种;01：数电专票 02：数电普票 004：纸质专票 007：纸质普票 026：电子普票
     */
    private String fppz;

    /**
     * 特定要素;空：非特定要素 01：成品油发票 02：稀土发票 03：建筑服务发票 04：货物运输服务发票 05：不动产销售服务发票 06：不动产租赁服务发票
     * 07：代收车船税 08：通行费 09：旅客运输服务发票 10：医疗服务（住院）发票 11：医疗服务（门诊）发票 12：自产农产品销售发票
     * 13 拖拉机和联合收割机发票 14：机动车 15：二手车 16：农产品收购发票 17：光伏收购发票 18：卷烟发票
     */
    private String tdys;

    /**
     * 购买方名称
     */
    private String gmfmc;

    /**
     * 购买方纳税人识别号
     */
    private String gmfnsrsbh;

    /**
     * 销售方名称
     */
    private String xsfmc;

    /**
     * 销售方纳税人识别号
     */
    private String xsfnsrsbh;

    /**
     * 合计金额
     */
    private BigDecimal hjje;

    /**
     * 合计税额
     */
    private BigDecimal hjse;

    /**
     * 价税合计
     */
    private BigDecimal jshj;

    /**
     * 扣除额（税控发票使用）
     */
    private BigDecimal kce;

    /**
     * 开票人
     */
    private String kpr;

    /**
     * 备注
     */
    private String bz;

    /**
     * 开票日期;格式：	yyyy-MM-dd HH:mm:ss
     */
    private Date kprq;

    /**
     * 数电发票上传状态；0：未上传 1：上传中 2：已上传 3：上传失败
     */
    private String sczt;

    /**
     * 数电发票状态；0：正常，2：作废，3：已红冲，7：部分红冲，8：全额红冲
     */
    private String sdfpzt;

    /**
     * 税控发票状态；1：正常，2：作废，3：红冲
     */
    private String skfpzt;

    /**
     * 数据来源;0：交易数据开票 1：手工申请 2：官网开票
     */
    private String sjly;

    /**
     * 开票状态;0：未开票 2：开票成功 3：开票失败
     */
    private String kpzt;

    /**
     * 单号类型;01：投保单号；02：汇交单号；03学平险受单号
     */
    private String dhlx;

    /**
     * 投保单号/汇交单号/学平险受单号
     * 01：投保单号；02：汇交单号；03学平险受单号
     */
    private String dh;

    /**
     * 差额征税类型代码;空：非差额发票 01：全额开票 02：差额开票
     */
    private String cezslxdm;

    /**
     * 匹配状态：0未完全匹配，1已完全匹配，-1无需匹配，且只针对手工开票数据
     */
    private String ppzt;

    /**
     * 征税方式;0：普通征税，2：差额征税
     */
    private String zsfs;

    /**
     * 是否不动产;0：不是，1：是
     */
    private String sfbdc;

    /**
     * 设备单位ID，税控发票使用该值查询销方信息
     */
    private String sbdwid;

    /**
     * 交易机构
     */
    private String qydjid;

    /**
     * 发票明细信息
     */
    private List<InvoiceItemVo> invoiceItemVoList;

}
